import { getToken } from '@/core/utils/auth'
import $tab from '@/core/plugins/tab'

// 登录页面
const loginPage = '/pages/login'

// 页面白名单
const whiteList = ['/pages/login', '/pages/common/webview/index', '/pages/common/agreement/index']

// 检查地址白名单
function checkWhite(url) {
  const path = url.split('?')[0]
  return whiteList.indexOf(path) !== -1
}

// 页面跳转验证拦截器
const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
list.forEach((item: string) => {
  uni.addInterceptor(item, {
    invoke(to) {
      console.log('1. 路由拦截')
      // 存在token时
      if (getToken()) {
        if (to.url === loginPage) {
          $tab.reLaunch('/').then(() => {})
        }
        return true
      } else {
        console.log('2. 路由地址', to)
        // 验证放行白名单
        if (checkWhite(to.url)) {
          return true
        }
        // 路由登录页
        $tab.reLaunch(loginPage).then(() => {})
        return false
      }
    },
    fail(err) {
      console.log('4: 异常执行', err)
      $tab.navigateTo('/pages/common/404/index').then(() => {})
    },
  })
})
